package com.easy.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.easy.bean.ProductImage;
import com.easy.common.CommonResult;
import com.easy.dao.IImageDao;
import com.easy.dao.IProductDao;
import com.easy.service.IProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/image")
public class ImageController {
    @Autowired
    private IImageDao iImageDao;
    @Autowired
    private IProductDao iProductDao;
    @Autowired
    private IProductService iProductService;

    @GetMapping("/all")
    public CommonResult getImage(@RequestParam Integer productId) {
        QueryWrapper<ProductImage> wrapper = new QueryWrapper<>();
        wrapper.eq("product_id", productId)
                .orderByAsc("sort");
        List<ProductImage> list = iImageDao.selectList(wrapper);
        return CommonResult.success(list, list.size());
    }

    @PostMapping("/add")
    public CommonResult addImage(@RequestBody ProductImage productImage ){
        // 查询当前 productId 下是否已经存在图片
        QueryWrapper<ProductImage> wrapper = new QueryWrapper<>();
        wrapper.eq("product_id", productImage.getProductId());

        // 获取该 productId 现有的图片数量及最大 sort 值
        List<ProductImage> imageList = iImageDao.selectList(wrapper);
        if (imageList.isEmpty()) {
            // 如果没有图片，设置 sort 为 1
            productImage.setSort(1);
        } else {
            // 如果已经存在图片，设置 sort 为现有最大 sort 值 + 1
//            int maxSort = imageList.stream().mapToInt(ProductImage::getSort).max().orElse(0);
            productImage.setSort(imageList.size() + 1);
        }
        // 更新图片
        int result = iImageDao.insert(productImage);
//        iProductService.updateImage();// 更新第一张照片为商品首页图
        if(productImage.getSort() == 1){
            iProductService.updateImage(productImage.getId());
        }
        if (result > 0) {
            return CommonResult.success("添加该商品照片成功");
        } else {
            return CommonResult.fail("添加该商品照片失败");
        }
    }

    @DeleteMapping("/del")
    public CommonResult delImage(@RequestParam Integer id){
        int result = iImageDao.deleteById(id);
        if(result >0){
            return  CommonResult.success("删除该商品照片成功");
        }else {
            return CommonResult.fail("删除该商品照片失败");
        }
    }

    // 修改商品图片顺序 将id图片 sort设置为1 它前面的图片sort依次递增
    @PutMapping("/editimage")
    public CommonResult editSort(@RequestParam Integer id){
        //判断id照片是否存在
        ProductImage image = iImageDao.selectById(id);
        if(image == null){
            return CommonResult.fail("图片不存在");
        }
        // 获取照片 商品product_id
        Integer productId = image.getProductId();
        //商品id查看所有图片
        QueryWrapper<ProductImage> wrapper = new QueryWrapper<>();
        wrapper.eq("product_id",productId)
                .orderByAsc("sort");
        List<ProductImage> list = iImageDao.selectList(wrapper);
        // 商品 sort 递增
        int sort = 2;
        for(ProductImage ima:list){
            if(ima.getId().equals(id)){
                //修改这个图片的sort为1
                ima.setSort(1);
            }else {
                ima.setSort(sort++);
            }
            // 更新顺序
            iImageDao.updateById(ima);
        }
        return CommonResult.success("图片顺序更新成功");
    }

    @PutMapping("editproductimg")
    public CommonResult editProductImg(@RequestParam Integer id){
        return iProductService.updateImage(id);
    }

    @PutMapping("editproductimgall")
    public CommonResult editProductImgAll(){
        return iProductService.updateImage();
    }


}
